package com.wakyde.collection;

import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;

/**
 * 比较HashSet,LinkedHashSet和TreeSet三者异同？
 */
public class SetDemo {
    public static void main(String[] args) {
        // 相同点
        // 都是实现了Set的接口, 且都不是线程安全的
        Set<String> set1 = new HashSet<>();
        Set<String> set2 = new LinkedHashSet<>();
        Set<String> set3 = new TreeSet<>();
        // 不同点
        // 底层结构不同，是否有序
        // HashSet: 底层是哈希表，无序的
        // LinkedHashSet: 底层是双向链表 + 哈希表，插入和取出的顺序满足先进先出
        // TreeSet: 底层是红黑树，有序的，排序的方式有自然排序和定制排序
    }
}
